from graphviz import Digraph

# 创建一个有向图对象
dot = Digraph(comment='Profit Tax Calculation',graph_attr={'charset': 'utf8'},node_attr={'fontname': 'SimHei'}, edge_attr={'fontname': 'SimHei'})

# 添加节点
dot.node('start', '开始')
dot.node('input', '输入成绩')
dot.node('check_90', '成绩 >= 90?')
dot.node('excellent', '优秀')
dot.node('check_80', '成绩 >= 80?')
dot.node('good', '良好')
dot.node('check_70', '成绩 >= 70?')
dot.node('medium', '中等')
dot.node('check_60', '成绩 >= 60?')
dot.node('pass', '及格')
dot.node('fail', '不及格')
dot.node('end', '结束')

# 添加边，连接各个节点，构建流程逻辑
dot.edge('start', 'input')
dot.edge('input', 'check_90')
dot.edge('check_90', 'excellent', label='是')
dot.edge('check_90', 'check_80', label='否')
dot.edge('check_80', 'good', label='是')
dot.edge('check_80', 'check_70', label='否')
dot.edge('check_70', 'medium', label='是')
dot.edge('check_70', 'check_60', label='否')
dot.edge('check_60', 'pass', label='是')
dot.edge('check_60', 'fail', label='否')
dot.edge('excellent', 'end')
dot.edge('good', 'end')
dot.edge('medium', 'end')
dot.edge('pass', 'end')
dot.edge('fail', 'end')

# 渲染并保存图像（这里保存为pdf格式，你也可以改成其他支持的格式如png等）
dot.render('grade_judgment', format='pdf', view=True)